package animation;
import ui.UserInterfaceFactory;
import ui.SnakeUserInterface;
import java.io.PrintStream;
import java.util.Scanner;
import ui.Event;
public class Animation {
	static final int HOOGTE_VELD = 3;
	static final int BREEDTE_VELD = 3;
	double snelheid = 25;
	boolean snake = false;
	Coordinate coordinaat;

	SnakeUserInterface ui;
	PrintStream out;

	Animation(){
		out = new PrintStream(System.out);
		coordinaat = new Coordinate(0,0);
		ui = UserInterfaceFactory.geefSnakeUI(BREEDTE_VELD,HOOGTE_VELD);
	}

	void plaatsObject(){
		ui.maakLeeg();
		if(snake){
			ui.plaats(coordinaat.x, coordinaat.y, ui.SNAKE);
		} else if(!snake){
			ui.plaats(coordinaat.x, coordinaat.y, ui.MUUR);
		}
		ui.toon();
	}

	void verwerkEvent(Event event){
		if(event.naam.equals("pijltje") && event.data.equals("L")){
			snelheid -= 0.5;
			ui.zetAnimatieSnelheid(snelheid);
		} else if (event.naam.equals("pijltje") && event.data.equals("R")){
			snelheid += 0.5;
			ui.zetAnimatieSnelheid(snelheid);
		} else if(event.naam.equals("letter") && event.data.equals("g")){
			snake = !snake;
		} 
	}

	void schuifOp(Event event){
		plaatsObject();
		if(coordinaat.x == BREEDTE_VELD -1 && coordinaat.y == HOOGTE_VELD - 1){
			coordinaat.y = 0;
			coordinaat.x = 0;
		} else if(!(coordinaat.x < BREEDTE_VELD - 1)){
			coordinaat.x = 0;
			coordinaat.y += 1;
		}
		else{
			coordinaat.x += 1;
		}
	}

	void beweegVeld(){
		ui.zetAnimatieSnelheid(snelheid);
		while(true){
			Event event = ui.geefEvent();
			verwerkEvent(event);
			if(event.naam.equals("alarm")){
				schuifOp(event);
			}
		}
	}

	void start(){
		beweegVeld();
	}

	public static void main(String[] args) {
		new Animation().start();
	}

}
